package com.example.projectdemo.xfrv.xf2;

import android.os.Bundle;

import com.example.projectdemo.R;

import java.util.ArrayList;
import java.util.List;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

/***
 * 点评：将要显示的item进行分组，作为吸附顶部的item
 * 实现思路：
 * 1.自定义StickHeaderDecoration：
 * 1.1 先容错检查
 * 1.2 绘制头部的view，使用ondrawOver画在上面
 *
 * 2.adapter需要实现StickHeaderDecoration.StickHeaderInterface接口
 * 2.1 方法boolean isStick(int position)中返回的值就标识当前位置的view是否需要固定。
 * 2.2 同时需要让Adapter中的item不复用（如果怕影响性能也可以单独让需要固定的view不复用） 在adapter构造方法中setHasStableIds(true)
 * 2.3 同时复写adapter的public long getItemId(int position) {return position;}
 *
 * 算法
 * 1.这儿我们需要判断当前显示item的前面是否有需要固定的item（这儿取名为beforitem）如果有则绘制在顶部
 * 2.我们还需要当第二个固定的item把前面的item慢慢顶上去的效果，这儿通过判断当前显示的第一个item的下一个item是否需要固定，如果需要则通过manager.getDecoratedTop(childNext)获取这个item距离顶部的距离然后通过计算把beforitem先上移动一定的距离。
 *
 * https://www.cnblogs.com/zhujiabin/p/9804079.html
 * https://github.com/LiuLinXin/StickHeaderRecyclerView-philer
 *
 * 总结：不建议用
 */
public class Xf2Activity extends AppCompatActivity {

    private List<String> dates = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xf2);

        RecyclerView recycle = findViewById(R.id.xf2rv);
        for (int i = 0; i < 66; i++) {
            dates.add("date : " + i);
        }

        recycle.setLayoutManager(new LinearLayoutManager(this));
        recycle.setAdapter(new NormalAdapter(this, dates));
        recycle.addItemDecoration(new StickHeaderDecoration(recycle));
    }
}
